/*
 * ListenerNuevaColeccion.java
 *
 * Created on 21 de septiembre de 2005, 1:14
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package fmap.gui.actionListener;

import fmap.DatosCompartidos;
import fmap.model.Collection;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import fmap.utils.DirectorioUtil;
import java.util.Vector;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

/**
 *
 * @author javi
 */
public class ListenerJFrameAdminCollection implements ActionListener,ListSelectionListener
{
    /** Objeto que almacena la coleccion seleccionada */
    Collection coleccionSelect      = null;
    Collection coleccionSelectEdit  = null;
    
    
    /** Creates a new instance of ListenerEscritorio */
    public ListenerJFrameAdminCollection ()
    {
    }
    
    
    /**
     *  Esto se produce cuando seleccionamos una coleccion en la lista
     *  Almacenamos la coleccion seleccionada en un objeto tipo IColeccion para cuando pinchemos en el boton de Abrir
     *  saber cual es la coleccion a abrir
     */
    public void valueChanged (ListSelectionEvent event)
    {
        JList coleccionTemp = (JList)event.getSource ();
        coleccionSelect         = (Collection)coleccionTemp.getSelectedValue ();
    }
    
    
    /**
     * Esto se produce cuando pinchamos en el boton de Abrir
     * Modificamos el arbol con los cds de la nueva coleccion abierta y cerramos el formulario
     */
    public void actionPerformed (ActionEvent ae)
    {
        
        /** Ahora mismo este evento solo se puede producir al pulsar un boton */
//        JButton jb = (JButton)ae.getSource ();
        
        /** Si hemos pulsado el boton "Abrir" */
        if(ae.getActionCommand ().equals ("jb_abrir"))
        {
            new fmap.actions.collection.OpenCollectionAction ( coleccionSelect );
            
            DatosCompartidos.getJFrameAdminCollection ().getButtonClose ().setEnabled ( true );
            DatosCompartidos.getJFrameAdminCollection ().setVisible ( false );
            
            // Mostramos en el panel derecho el card de los nodos
            java.awt.CardLayout layout = (java.awt.CardLayout)DatosCompartidos.getPanelRight ().getLayout ();
            layout.show (DatosCompartidos.getPanelRight (), "cardCollection");
            
DatosCompartidos.getJFrameMain ().getSplitPane3 ().setVisible (true);
DatosCompartidos.getJFrameMain ().getSplitPane1 ().setDividerLocation (230);
System.out.println ("Mensaje de prueba");
            
            DatosCompartidos.getPanelRight ().getTextFCollectionTitulo ().setText ( DatosCompartidos.getCollectionActual ().getName () );
            DatosCompartidos.getPanelRight ().getTextPCollectionDesc ().setText ( DatosCompartidos.getCollectionActual ().getDesc () );
            // --------------------------------------------------------
            
        }
        else if(ae.getActionCommand ().equals ("jb_guardar"))
        {
            
            // Tenemos que comprobar si estamos insertando o actualizando
            
            
            
            
            if( !DatosCompartidos.getJFrameAdminCollection ().getTextFNewCollection ().getText ().trim ().equals ("") )
            {
                /** Si hemos pulsado en el boton de guardar, insertamos o actualizamos dependiendo de la variable coleccionSelectEdit */
                if ( coleccionSelectEdit == null )
                    new fmap.actions.collection.NewCollectionAction ().NewCollectionAction ( DatosCompartidos.getJFrameAdminCollection ().getTextFNewCollection ().getText (), DatosCompartidos.getJFrameAdminCollection ().getTxtFComentNewCollection ().getText ());
                else
                    new fmap.actions.collection.UpdateCollectionAction ( coleccionSelectEdit.getId (), DatosCompartidos.getJFrameAdminCollection ().getTextFNewCollection ().getText (), DatosCompartidos.getJFrameAdminCollection ().getTxtFComentNewCollection ().getText () );
                
                
                /** Refrescamos la lista de colecciones */
                fmap.model.Collection[] aCol = (fmap.model.Collection[])new fmap.actions.collection.GetCollectionsAction ().GetCollectionsAction ();
                if (aCol != null )
                {
                    DatosCompartidos.getJFrameAdminCollection ().getListCollection ().setListData ( aCol );
                    DatosCompartidos.setACollection ( aCol );
                }
                
                coleccionSelectEdit = null;
                java.awt.CardLayout layout = (java.awt.CardLayout)DatosCompartidos.getJFrameAdminCollection ().getPanel3 ().getLayout ();
                layout.show (DatosCompartidos.getJFrameAdminCollection ().getPanel3 (),"card2");
            }
            else
            {
                /** Validamos la entrada de datos para una nueva coleccion */
                JOptionPane.showMessageDialog (DatosCompartidos.getJFrameAdminCollection (),
                        "Debe cubrir el nombre de la colecci�n",
                        "ERROR",
                        JOptionPane.ERROR_MESSAGE);
            }
        }
        else if(ae.getActionCommand ().equals ("jb_editar"))
        {
            if( coleccionSelect!=null )
            {
                DatosCompartidos.getJFrameAdminCollection ().getTextFNewCollection ().setText ( coleccionSelect.getName () );
                DatosCompartidos.getJFrameAdminCollection ().getTxtFComentNewCollection ().setText ( coleccionSelect.getDesc () );
                coleccionSelectEdit = coleccionSelect;
                
                java.awt.CardLayout layout = (java.awt.CardLayout)DatosCompartidos.getJFrameAdminCollection ().getPanel3 ().getLayout ();
                layout.show (DatosCompartidos.getJFrameAdminCollection ().getPanel3 (),"card3");
            }
            else
            {
                JOptionPane.showMessageDialog (DatosCompartidos.getJFrameAdminCollection (),
                        "Debe seleccionar la coleccion a editar",
                        "ERROR",
                        JOptionPane.ERROR_MESSAGE);
            }
        }
        else if(ae.getActionCommand ().equals ("jb_cancelar"))
        {
            /** Si hemos pulsado en el "cancelar nueva coleccion" */
            coleccionSelectEdit = null;
            java.awt.CardLayout layout = (java.awt.CardLayout)DatosCompartidos.getJFrameAdminCollection ().getPanel3 ().getLayout ();
            
            layout.show (DatosCompartidos.getJFrameAdminCollection ().getPanel3 (),"card2");
            
        }
        else if(ae.getActionCommand ().equals ("jb_eliminar"))
        {
            
            // Si la coleccion que estamos intentando eliminar es la que tenemos abierta mostramos un mensaje de error
            if( coleccionSelect==null )
            {
                /** Validamos la entrada de datos para una nueva coleccion */
                JOptionPane.showMessageDialog (DatosCompartidos.getJFrameAdminCollection (),
                        "Debe seleccionar la coleccion a eliminar",
                        "ERROR",
                        JOptionPane.ERROR_MESSAGE);
            }
            else if( ( DatosCompartidos.getCollectionActual () != null ) && ( coleccionSelect.getId () == DatosCompartidos.getCollectionActual ().getId () ) )
            {
                JOptionPane.showMessageDialog (DatosCompartidos.getJFrameAdminCollection (),
                        "No puede eliminar una colección abierta.",
                        "ERROR",
                        JOptionPane.ERROR_MESSAGE);
            }
            else
            {
                
                int opcion = JOptionPane.showConfirmDialog (DatosCompartidos.getJFrameAdminCollection (),
                        "¿Esta seguro de eliminar esta colección y todos sus mapas de ficheros asociados?",
                        "¿Seguro?",
                        JOptionPane.YES_NO_OPTION);
                
                if( opcion != 1 )
                {
                    /** Si hemos pulsado el boton de eliminar, eliminamos la coleccion seleccionada */
                    new fmap.actions.collection.DeleteCollectionAction ().DeleteCollectionAction ( (int)new Integer (coleccionSelect.getId ()) );
                    
                    
                    /** Refrescamos la lista de colecciones */
                    fmap.model.Collection[] aCol = (fmap.model.Collection[])new fmap.actions.collection.GetCollectionsAction ().GetCollectionsAction ();
                    
                    if ( aCol != null )
                    {
                        DatosCompartidos.getJFrameAdminCollection ().getListCollection ().setListData ( aCol );
                    }
                }
            }
        }
        else if(ae.getActionCommand ().equals ("jb_nueva"))
        {
            /** Si hemos pulsado en el "nueva coleccion" */
            DatosCompartidos.getJFrameAdminCollection ().getTextFNewCollection ().setText ("");
            DatosCompartidos.getJFrameAdminCollection ().getTxtFComentNewCollection ().setText ("");
            
            java.awt.CardLayout layout = (java.awt.CardLayout)DatosCompartidos.getJFrameAdminCollection ().getPanel3 ().getLayout ();
            
            layout.show (DatosCompartidos.getJFrameAdminCollection ().getPanel3 (),"card3");
        }
        else if(ae.getActionCommand ().equals ("buttonCerrar"))
        {
            // Eliminamos resultados de la ultima b�squeda si es que existen
            new DirectorioUtil ().eliminaDirectorio (DatosCompartidos.getPath ()+"/tmp/result1");
            
            /** Si hemos pulsado en el "cerrar coleccion" */
            DatosCompartidos.setCollectionActual ( null );
            
            fmap.gui.jTreePersonal.TreeModelPersonal tmp = new fmap.gui.jTreePersonal.TreeModelPersonal ( DatosCompartidos.getCollectionActual () );
            DatosCompartidos.getJTreePersonal ().setModel ( tmp );
            DatosCompartidos.getJTreePersonal ().setVisible ( false );
            
            DatosCompartidos.getJFrameMain ().desActiveComponents ();
            DatosCompartidos.getJFrameMain ().setLblMsj ( fmap.utils.IConstants.MSJ_COLECCION_NO_ABIERTA );
            DatosCompartidos.getJFrameMain ().getLblMsj ().setVisible ( true );
            
            new fmap.utils.properties.ContentProperties ().setPropiedad ("idColeccionAbierta", "0");

DatosCompartidos.getJFrameMain ().getSplitPane3 ().setVisible (false);
            
            DatosCompartidos.getJFrameAdminCollection ().getLabelCollectionOpen ().setText ( fmap.utils.IConstants.MSJ_COLECCION_NO_ABIERTA );
            DatosCompartidos.getJFrameAdminCollection ().getButtonClose ().setEnabled ( false );
            
            DatosCompartidos.getJTablePersonal ().setData ( new Vector () );
            
            
            // Mostramos en el panel derecho el card de los nodos
            java.awt.CardLayout layout = (java.awt.CardLayout)DatosCompartidos.getPanelRight ().getLayout ();
            layout.show (DatosCompartidos.getPanelRight (), "cardBlank");
            // --------------------------------------------------------
        }
    }
    
}
